1370 LOCATE 3,1:PRINT STRING$(255,32):LOCATE 3,1:COLOR 14,0:PRINT"Program Complete. Do you wish to SQUISH another program (Y/N) ":SOUND 1000,6:SOUND 660,5:COLOR 7,0
1380 Q$=INKEY$:IF Q$="" THEN 1380 ELSE IF Q$="Y" OR Q$="y" THEN RUN ELSE END
1390 ' Change color of current character being scanned
1400 LOCATE 8,20:PRINT" ";
1410 N$=LEFT$(A$,PP):ZC=160+PP:PP=PP+1:P=0:J$="":DT=0:FOR T=PP TO LEN(A$):L$=MID$(A$,T,1):AZ=INT(ZC/80):LOCATE AZ+1,ZC-AZ*80+1:COLOR 12,0:PRINT MID$(A$,T,1);:ZC=ZC+1:COLOR 12,0:LOCATE 8,19:PRINT T
1420 ' Set P equal to 1 on first quote mark in a print statement else set P equal to 0 on second
1430 COLOR 7,0:IF L$=CHR$(34) THEN IF P THEN P=0 ELSE P=1
1440 ' if the current scan position is within a set of quote marks, skip all normal Squish processing
1450 IF P THEN 1600
1460 ' Discontinue processing if DATA is found in current program line
1470 IF MID$(A$,T,4)="DATA" THEN DT=1 ELSE IF L$=":" THEN DT=0
1480 IF DT THEN 1600
1490 ' Remove all spaces when safe to do so and update Spaces Deleted counter
1500 IF L$<>" " OR XS$<>"Y" THEN 1550 ELSE IF J$>"" THEN L1$=RIGHT$(J$,1):IF L1$="^" OR (L1$>")" AND L1$<"0") OR (L1$>"9" AND L1$<"A") THEN L$=""
1510 L1$="X":IF T<LEN(A$) THEN L1$=MID$(A$,T+1,1)
1520 IF L1$="^" OR L1$=CHR$(34) OR L1$=" " OR (L1$>")" AND L1$<"0") OR (L1$>"9" AND L1$<"A") THEN L$=""
1530 IF L$="" THEN SD=SD+1
1540 ' Check for user protected line
1550 IF PV>PJ THEN IF LN=PRO(PJ) THEN PJ=PJ+1:GOTO 1640 ELSE IF LN>PRO(PJ) THEN PJ=PJ+1
1560 ' Search for REMarks and remove if allowed
1570 IF MID$(A$,T,3)="REM" OR L$="'" THEN IF IP$<>"Y" THEN A$=N$+J$+MID$(A$,T,255):GOTO 1640 ELSE RD=RD+1:IF LN=REF(R) THEN R=R-1:A$=N$+J$+"'":GOTO 1640 ELSE IF J$="" THEN 1150 ELSE 1620
1580 ' Construct a new Squished version of the current line in J$
1590 ' Add a trailing quote mark if none found after a print statement
1600 J$=J$+L$:NEXT:IF P THEN J$=J$+CHR$(34)
1610 ' Add the current program line number and jump to line 310
1620 A$=N$+J$:GOTO 1220
1630 ' If lines have been combined then save them
1640 IF C$<>"" THEN PRINT #2,C$:C$=""
1650 ' Otherwise write new program line
1660 PRINT #2,A$:GOTO 1150
1670 ' Subroutine to convert lower to upper case
1680 HIGH$=""
1690 FOR IPOS=1 TO LEN(LOW$)
1700 ICHAR = ASC(MID$(LOW$,IPOS,1))
1710 IF ICHAR<&H7B THEN IF ICHAR>&H60 THEN ICHAR=ICHAR-&H20
1720 HIGH$ = HIGH$ + CHR$(ICHAR)
1730 NEXT IPOS
1740 RETURN
1750 ' Error trapping done here
1760 SOUND 1000,3:SOUND 600,4:COLOR 15,0
1770 IF ERR=53 THEN PRINT"File "+SQ$+" not found, reenter.":COLOR 7,0:CLS:GOTO 590
1780 IF ERR=61 THEN PRINT"Disk full, program terminated":GOTO 1840
1790 IF ERR=67 THEN PRINT"Too many files on disk.":GOTO 1840
1800 IF ERR=70 THEN PRINT"Disk is write protected.":GOTO 1840
1810 IF ERR=71 THEN PRINT"Check disk drive.":GOTO 1840
1820 IF ERR=72 THEN PRINT"Disk media error.":GOTO 1840